package persistencia;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import util.Conexion;
import bean.Estructura;

public class EstructuraDAO {

	public List<Estructura> listar() throws SQLException {
		List<Estructura> listado = new ArrayList<Estructura>();
		PreparedStatement pstm = Conexion.obtenerConexionMSQL()
				.prepareStatement(
						"SELECT id,tipo,modelo,marca,estilo,situacion "
								+ "FROM tbl_estructura");
		ResultSet rs = pstm.executeQuery();
		while (rs.next()) {
			Estructura estilo = new Estructura();
			estilo.setId(rs.getInt("id"));
			estilo.setTipo(rs.getString("tipo"));
			estilo.setModelo(rs.getString("modelo"));
			estilo.setMarca(rs.getString("marca"));
			estilo.setEstilo(rs.getString("estilo"));
			estilo.setSituacion(rs.getString("situacion"));
			listado.add(estilo);
		}
		rs.close();
		pstm.close();
		return listado;
	}

	public List<Estructura> buscarPorTipo(String filtro, String situacion)
			throws SQLException {
		List<Estructura> listado = new ArrayList<Estructura>();
		PreparedStatement pstm = Conexion.obtenerConexionMSQL()
				.prepareStatement(
						"SELECT id,tipo,modelo,marca,estilo,situacion "
								+ "FROM tbl_estructura where situacion in ("
								+ situacion + ") and tipo like ?");
		pstm.setString(1, filtro + "%");
		ResultSet rs = pstm.executeQuery();
		while (rs.next()) {
			Estructura estilo = new Estructura();
			estilo.setId(rs.getInt("id"));
			estilo.setTipo(rs.getString("tipo"));
			estilo.setModelo(rs.getString("modelo"));
			estilo.setMarca(rs.getString("marca"));
			estilo.setEstilo(rs.getString("estilo"));
			estilo.setSituacion(rs.getString("situacion"));
			listado.add(estilo);
		}
		rs.close();
		pstm.close();
		return listado;
	}

	public List<Estructura> buscarPorEstilo(String filtro, String situacion)
			throws SQLException {
		List<Estructura> listado = new ArrayList<Estructura>();
		PreparedStatement pstm = Conexion.obtenerConexionMSQL()
				.prepareStatement(
						"SELECT id,tipo,modelo,marca,estilo,situacion "
								+ "FROM tbl_estructura where situacion in ("
								+ situacion + ") and estilo like ?");
		pstm.setString(1, filtro + "%");
		ResultSet rs = pstm.executeQuery();
		while (rs.next()) {
			Estructura estilo = new Estructura();
			estilo.setId(rs.getInt("id"));
			estilo.setTipo(rs.getString("tipo"));
			estilo.setModelo(rs.getString("modelo"));
			estilo.setMarca(rs.getString("marca"));
			estilo.setEstilo(rs.getString("estilo"));
			estilo.setSituacion(rs.getString("situacion"));
			listado.add(estilo);
		}
		rs.close();
		pstm.close();
		return listado;
	}

	public List<Estructura> buscarPorMarca(String filtro, String situacion)
			throws SQLException {
		List<Estructura> listado = new ArrayList<Estructura>();
		PreparedStatement pstm = Conexion.obtenerConexionMSQL()
				.prepareStatement(
						"SELECT id,tipo,modelo,marca,estilo,situacion "
								+ "FROM tbl_estructura where situacion in ("
								+ situacion + ") and marca like ?");
		pstm.setString(1, filtro + "%");
		ResultSet rs = pstm.executeQuery();
		while (rs.next()) {
			Estructura estilo = new Estructura();
			estilo.setId(rs.getInt("id"));
			estilo.setTipo(rs.getString("tipo"));
			estilo.setModelo(rs.getString("modelo"));
			estilo.setMarca(rs.getString("marca"));
			estilo.setEstilo(rs.getString("estilo"));
			estilo.setSituacion(rs.getString("situacion"));
			listado.add(estilo);
		}
		rs.close();
		pstm.close();
		return listado;
	}

	public List<Estructura> buscarPorModelo(String filtro, String situacion)
			throws SQLException {
		List<Estructura> listado = new ArrayList<Estructura>();
		PreparedStatement pstm = Conexion.obtenerConexionMSQL()
				.prepareStatement(
						"SELECT id,tipo,modelo,marca,estilo,situacion "
								+ "FROM tbl_estructura where situacion in ("
								+ situacion + ") and modelo like ?");
		pstm.setString(1, filtro + "%");
		ResultSet rs = pstm.executeQuery();
		while (rs.next()) {
			Estructura estilo = new Estructura();
			estilo.setId(rs.getInt("id"));
			estilo.setTipo(rs.getString("tipo"));
			estilo.setModelo(rs.getString("modelo"));
			estilo.setMarca(rs.getString("marca"));
			estilo.setEstilo(rs.getString("estilo"));
			estilo.setSituacion(rs.getString("situacion"));
			listado.add(estilo);
		}
		rs.close();
		pstm.close();
		return listado;
	}

	public List<Estructura> buscarPorEstructura(Estructura filtro)
			throws SQLException {
		List<Estructura> listado = new ArrayList<Estructura>();
		PreparedStatement pstm = Conexion
				.obtenerConexionMSQL()
				.prepareStatement(
						"SELECT id,tipo,modelo,marca,estilo,situacion "
								+ "FROM tbl_estructura where tipo=? and modelo=? and marca=?");
		pstm.setString(1, filtro.getTipo());
		pstm.setString(2, filtro.getModelo());
		pstm.setString(3, filtro.getMarca());
		ResultSet rs = pstm.executeQuery();
		while (rs.next()) {
			Estructura estilo = new Estructura();
			estilo.setId(rs.getInt("id"));
			estilo.setTipo(rs.getString("tipo"));
			estilo.setModelo(rs.getString("modelo"));
			estilo.setMarca(rs.getString("marca"));
			estilo.setEstilo(rs.getString("estilo"));
			estilo.setSituacion(rs.getString("situacion"));
			listado.add(estilo);
		}
		rs.close();
		pstm.close();
		return listado;
	}

	public int insertar(Estructura filtro) throws SQLException {
		PreparedStatement pstm = Conexion
				.obtenerConexionMSQL()
				.prepareStatement(
						"insert into tbl_estructura (tipo,modelo,marca,estilo,situacion,usuario_creacion,fecha_creacion) values(?,?,?,?,?,?,?)");
		pstm.setString(1, filtro.getTipo());
		pstm.setString(2, filtro.getModelo());
		pstm.setString(3, filtro.getMarca());
		pstm.setString(4, filtro.getEstilo());
		pstm.setString(5, filtro.getSituacion());
		pstm.setString(6, filtro.getUsuario_creacion());
		pstm.setInt(7, filtro.getFecha_creacion());
		int resultado = pstm.executeUpdate();
		pstm.close();
		return resultado;
	}

	public int modificar(Estructura filtro) throws SQLException {
		PreparedStatement pstm = Conexion
				.obtenerConexionMSQL()
				.prepareStatement(
						"update tbl_estructura set tipo=?,modelo=?,marca=?,estilo=?,situacion=?,usuario_creacion=?,fecha_creacion=? where id=?");
		pstm.setString(1, filtro.getTipo());
		pstm.setString(2, filtro.getModelo());
		pstm.setString(3, filtro.getMarca());
		pstm.setString(4, filtro.getEstilo());
		pstm.setString(5, filtro.getSituacion());
		pstm.setString(6, filtro.getUsuario_modificacion());
		pstm.setInt(7, filtro.getFecha_modificacion());
		pstm.setInt(8, filtro.getId());
		int resultado = pstm.executeUpdate();
		pstm.close();
		return resultado;
	}

}
